<template>
  <!-- 日期时间范围选择器组件 -->
  <div class="datetime-range-picker">
    <!-- 日期选择器 -->
    <el-date-picker
      v-model="dateValue"
      type="date"
      placeholder="选择日期"
      format="YYYY-MM-DD"
      value-format="YYYY-MM-DD"
      class="date-picker"
    />
    <!-- 时间范围选择器 -->
    <time-range-picker
      v-model:startTime="startTimeValue"
      v-model:endTime="endTimeValue"
      class="time-picker"
    />
  </div>
</template>

<script>
import TimeRangePicker from './TimeRangePicker.vue'

/**
 * 日期时间范围选择器组件
 * 组合日期选择器和时间范围选择器，提供完整的日期时间范围选择功能
 */
export default {
  name: 'DateTimeRangePicker',
  components: {
    TimeRangePicker
  },
  props: {
    /**
     * 选中的日期，格式为YYYY-MM-DD
     */
    date: {
      type: String,
      default: ''
    },
    /**
     * 开始时间
     */
    startTime: {
      type: [Date, null],
      default: null
    },
    /**
     * 结束时间
     */
    endTime: {
      type: [Date, null],
      default: null
    }
  },
  emits: ['update:date', 'update:startTime', 'update:endTime'],
  computed: {
    /**
     * 日期值的计算属性，用于双向绑定
     */
    dateValue: {
      get() {
        return this.date;
      },
      set(value) {
        this.$emit('update:date', value);
      }
    },
    /**
     * 开始时间的计算属性，用于双向绑定
     */
    startTimeValue: {
      get() {
        return this.startTime;
      },
      set(value) {
        this.$emit('update:startTime', value);
      }
    },
    /**
     * 结束时间的计算属性，用于双向绑定
     */
    endTimeValue: {
      get() {
        return this.endTime;
      },
      set(value) {
        this.$emit('update:endTime', value);
      }
    }
  }
}
</script>

<style scoped>
/* 日期时间范围选择器容器样式 */
.datetime-range-picker {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  flex-wrap: wrap;
}

/* 日期选择器样式 */
.date-picker {
  width: 140px;
}

/* 移动端适配 */
@media (max-width: 768px) {
  .datetime-range-picker {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
}
</style> 